Search engines are tools that can retrieve information stored in computer networks. Users compose search queries (or simply queries) with certain searching criteria including keywords, phrases, or other conditions, and send the queries to search engines. Once a search engine receives a query, it searches areas in a network to which it has access often using a pre-constructed index of content from that network, and returns results comprising a list of items matching the specified criteria sorted by some relevant measurements. With the help of web technology, users can use browsers to access search engines, input queries, and receive and navigate search results to obtain information according to their interests and needs.
There are different types of search engines to search information for different users. For example, a general-purpose search engine can search a wide range of topics over different web sites. There are also search engines designed to focus on searching in a selected scope of areas. Users can choose the type of search engines according to their interests. However, there are very few options that allow users specifying advanced search criteria to filter the search results to meet their special needs for individual queries.
Recent advances of custom search engines (CSEs) allow the creation of a search engine according to users' needs and preferences. A CSE is defined by a CSE specification that comprises a set of special requirements for a search engine. For example, a developer of a search host site can specify a CSE that includes or excludes specific websites, sets priority to particular keywords and websites, refines search results targeting specific information for a user of the search host site, etc. when using the search engine to conduct search for the user. The search box and results can match the look and feel of the results to the host site's style. Then the requirements are sent to a site providing CSE services (also called a CSE provider), which in turn generate a corresponding CSE specification.
Despite many convenient features of CSEs, they still have certain limitations. First, creating and maintaining a CSE is a manual process. The specification for a CSE, such as included and/or excluded websites, refinement criteria, and look and feel styles, are stored at the CSE provider's site. Every time a developer makes changes to his/her CSE specification, the developer has to update it at the CSE provider's site. Second, it is difficult to create a very large number of CSEs with minor differences targeting different search user groups. Third, it is difficult to programmatically create CSEs using other data sources such as calendar data (e.g. Apple iCal), real-time data feeds (such as RSS), searchable content with attributes (such as Google Base), etc.